package com.xayy.health.mgt.service;

import cn.kawins.base.result.CheckResult;
import com.xayy.health.mgt.model.TelemetryData;
import com.xayy.health.mgt.model.dto.DataFeatureDto;
import com.xayy.health.mgt.model.dto.TelemetryDto;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * @author zhangxa
 */
public interface DataFeatureService {

    /**
     * 手动试算
     *
     * @param telemetryDto 入参信息
     * @param request      入参信息
     * @return 结果日志
     */
    Map<String, Object> trial(TelemetryDto telemetryDto, HttpServletRequest request);

    /**
     * 剔野数据
     *
     * @param dataFeatureDto
     *            入参信息
     * @return 结果日志
     */
    List<TelemetryData> getYcList(DataFeatureDto dataFeatureDto);

    /**
     * 剔野数据
     *
     * @param dataFeatureDto
     *            入参信息
     * @return 剔野结果集合
     */
    List<TelemetryData> getTyList(DataFeatureDto dataFeatureDto);

    /**
     * 插入剔野数据
     *
     * @param telemetryData 剔野数据集合
     */
    void insertTy(List<TelemetryData> telemetryData);

    /**
     * 插入填充数据
     *
     * @param telemetryData 填充数据集合
     */
    void insertTc(List<TelemetryData> telemetryData);

    /**
     * 查询平滑数据
     * @param telemetryData 平滑数据集合
     */
    void insertPh(List<TelemetryData> telemetryData);

    /**
     * 填充数据
     *
     * @param dataFeatureDto
     *            入参信息
     * @return 填充数据集合
     */
    List<TelemetryData> getTcList(DataFeatureDto dataFeatureDto);

    /**
     * 平滑数据
     *
     * @param dataFeatureDto
     *            入参信息
     * @return 平滑信息集合
     */
    List<TelemetryData> getPhList(DataFeatureDto dataFeatureDto);

    /**
     * 数据预处理算法
     *
     * @param telemetryDto
     *            入参信息
     * @return 数据预处理算法结果
     */
    List<Object> predata(TelemetryDto telemetryDto);

    /**
     * 获取遥测数据
     *
     * @param telemetryDto
     *            入参信息
     * @return 遥测数据信息集合
     */
    List<TelemetryData> selectTelemetryData(TelemetryDto telemetryDto);

    /**
     * 数据预处理上线运行
     * 
     * @param telemetryDto
     *            入参信息
     * @return 结果日志
     */
    CheckResult<Object> updateSamplingInterval(TelemetryDto telemetryDto);


}
